node editor: Add a dark mode toggle
authorMatthias Clasen <mclasen@redhat.com>
Sun, 31 Jan 2021 00:28:02 +0000 (19:28 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 31 Jan 2021 00:57:24 +0000 (19:57 -0500)
This is useful to see light rendering clearly.

demos/node-editor/node-editor-window.c
demos/node-editor/node-editor-window.ui

index 995349b2cb6b58696719fa2e48744baf5854b4bd..55c61aa7990bb925ec4aede516f72db2aec00217 100644 (file)
@@ -700,6 +700,16 @@ out:
   g_free (source_dir);
 }
 
+static void
+dark_mode_cb (GtkToggleButton *button,
+              GParamSpec      *pspec,
+              NodeEditorWindow *self)
+{
+  g_object_set (gtk_widget_get_settings (GTK_WIDGET (self)),
+                "gtk-application-prefer-dark-theme", gtk_toggle_button_get_active (button),
+                NULL);
+}
+
 static void
 node_editor_window_finalize (GObject *object)
 {
@@ -814,6 +824,7 @@ node_editor_window_class_init (NodeEditorWindowClass *class)
   gtk_widget_class_bind_template_callback (widget_class, export_image_cb);
   gtk_widget_class_bind_template_callback (widget_class, testcase_save_clicked_cb);
   gtk_widget_class_bind_template_callback (widget_class, testcase_name_entry_changed_cb);
+  gtk_widget_class_bind_template_callback (widget_class, dark_mode_cb);
 }
 
 static GtkWidget *
index 20d36f6f287c628cb1af798d13bd2fa763cdfbe0..73b8b9ce4bd7f0bdf86b2a39529890c4df025ebf 100644 (file)
             <property name="icon-name">open-menu-symbolic</property>
           </object>
         </child>
+        <child type="end">
+          <object class="GtkToggleButton" id="dark_bg_button">
+            <property name="valign">center</property>
+            <property name="has-frame">0</property>
+            <property name="icon-name">display-brightness-symbolic</property>
+            <property name="tooltip-text" translatable="yes">Use a dark background</property>
+            <signal name="notify::active" handler="dark_mode_cb" swapped="0"/>
+          </object>
+        </child>
       </object>
     </child>
     <child>